perm filename OEROM.FAI[CMS,LCS] blob
sn#193553 filedate 1975-12-21 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00006 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 .INSERT ASMBL.FAI
C00004 00003 ROM RESET
C00006 00004 SETAD: STXZ DADR AND DADR 2
C00008 00005 GET VAL
C00010 00006 LED OUT
C00021 ENDMK
C⊗;
.INSERT ASMBL.FAI
; RAM
SVPCH: 377 ;0
SVPCL: 377 ;1
SVPS: 377 ;2
SVSP: 377 ;3
SVY: 377 ;4
SVPRA: 377 ;5
SVCRA: 377 ;6
SVPRB: 377 ;7
SVCRB: 377 ;10
DADR: 377 ;11
377 ;12
VAL: 377 ;13
NFLG: 377 ;14
ADR: 377 ;15
377 ;16
201 ;17 ← FF MARK
; ODT RAM & INTERUPT VECTORS
LOC 1000
SVZ: REPEAT 17,{176↔};1000 - 1016
SVA: 176 ;1017
SVX: 176 ;1020
SVNMI: 377 ;1021
IRQA: REPEAT 3,{111↔} ;1022 - 1024
NMIA: REPEAT 3,{333↔} ;1025 - 1027
377 ;1030 ← FF MARK
; ROM RESET
; OCT DDT CK FOR BBIT?
; CK OTHER PROM AND BRK ?
; SETUP IRQV WITH ? OR BRK FOR OTHER ROM
SVNUM←17
LOC 177400 ;SHOULD BE 177400
ODT: STX SVX ;SAVE X REG 3
LDX NMIA ; 3
STX SVNMI ;SAVE NMIA 3
LDXI RTI ; 2
STX NMIA ;FIX IT __3_
; 14
LDXI SVNUM ; 2
SVIT: STAX SVZ ;SAVE A AND 0 - 16 3
LDAZX -1 ;IN PAGE 2 2
DEX ; 1
BPL SVIT ; 2
TSX ;SAVE SP 1
STXZ SVSP ; 2
STYZ SVY ;SAVE Y __2_
; 15
; RESET I/O SAVE PR ?
CRA←173775 ↔ PRA←173774
CRB←173777 ↔ PRB←173776
LDXI 3 ; 2
SVPIA: LDAX PRA ;SAVE CR THEN DD 3
STAZX SVPRA ; 2
LDAI 0 ; 2
STAX PRA ;REPLACE WITH ZEROS 3
DEX ; 1
BPL SVPIA ; 2
STX PRB ;FOR OUTPUT __3_
; 18
; DPY .LOC
PLA ; 1
STAZ SVPS ; 2
PLA ; 1
STAZ SVPCL ; 2
TAX ; 1
PLA ; 1
STAZ SVPCH ; 2
TAY ; __1_
; 11
; ____
; 58
SETAD: STXZ DADR ;AND DADR 2
STYZ DADR+1 ; 2
GVAL: STXZ ADR ;SETUP ADR 2
STYZ ADR+1 ; 2
LDXI 0 ;CK FOR PAGE 0 OR 2 ? 2
LDAIX DADR ;GET VAL FROM @DADR 2
STAZ VAL ; 2
STXZ NFLG ;RESET NUM FLAG __2_
; 16
; KB SCAN
KSCAN: JSR LDPY ;DPY DADR AND VAL 3
JSR IKBW ;GET KBCHR 3
ANDI 17 ;GET RID OF JUNK 2
CMPI 10 ; 2
BEQ DOT ;EXAM 2
LDXZ NFLG ; 2
BCC GNUM ;BRANCH ON NUM 2
BEQ XNXT ;IF NO DEP THEN EX NXT__2_
; 18
; DEP
LDAZ DADR ;DEP DREG LOW 2
LDXI 0 ;CK FOR PAGE 0 OR 2 ? 2
STAIX ADR ;IN @ADR 2
; EXAM NEXT
XNXT: LDXZ ADR ; 2
LDYZ ADR+1 ; 2
INX ;ADR ← ADR+1 1
BNE SETAD ; 2
INY ; 1
JMP SETAD ; __3_
; 17
; EXAM
DOT: BITZ NFLG ;CK FOR CONTINUE 2
BEQ CONT ; 2
LDXZ DADR ;GET DADR FOR ADR 2
LDYZ DADR+1 ; 2
JMP GVAL ; __3_
; 11
; ____
; 62
; GET VAL
GNUM: BNE NOZRO ;IF FIRST NUM 2
STXZ DADR ;THEN ZERO ADR DPY 2
STXZ DADR+1 ; 2
NOZRO: LDXI 3 ; 2
STXZ NFLG ;SET NUM FLG 2
DIG: ASLZ DADR ;SHIFT ADDRESS LEFT 2
ROLZ DADR+1 ; 2
DEX ; 1
BNE DIG ;SHIFT MORE 2
ORAZ DADR ;AND ADD KBCHR 2
STAZ DADR ; 2
JMP KSCAN ; __3_
; 24
; CONTINUE
CONT: LDXI 3 ; 2
GETR: LDAZX SVPRA ;RESTORE CR AND PR 2
STAX PRA ; 3
DEX ; FIX THIS 1
BPL GETR ; __2_
; 10
LDXZ SVSP ;GET SP 2
TXS ; 1
LDYZ SVY ;GET Y 2
LDXI -3 ; 2
GETS: LDAZX SVPCH+3 ;RESTORE PC AND PS 2
PHA ;TO STACK 1
INX ; 1
BMI GETS ; __2_
; 13
LDXI SVNUM ; 2
GETZ: LDAX SVZ ;GET LOC 0 - 10 3
STAZX 0 ;FROM PAGE 2 2
DEX ; 1
BPL GETZ ; 2
LDA SVA ;GET A 3
LDX SVNMI ; 3
STX NMIA ;RESTORE NMIV 3
LDX SVX ;GET X 3
RTI ; __1_
; 23
; ____
; 70
; LED OUT
LDPY: LDAI 54 ;SET DDBIT 2
STA CRB ;AND PULSE IN CRB 3
LDXI 5 ; 2
LDYI 5 ; _2_
; 9
ROT: ROLZ VAL ;ROTATE VAL AND 2
ROLZ DADR ;DADR LEFT 4 2
ROLZ DADR+1 ;BITS AT A TIME 2
DEY ; 1
BNE ROT ; _2_
; 9
LDAZ VAL ; 2
ANDI 17 ; 2
ORAX DTBL ; 3
STA PRB ;DPY IT 3
LDYI 4 ; 2
DEX ; 1
BPL ROT ;DO REST 2
RTS ; __1_
; 16
DTBL: 0 ; 1
20 ; 1
40 ; 1
60 ; 1
100 ; 1
120 ; __1_
; 6
; INKBW
IKBW: LDAI 6 ;SET DDBIT 2
STA CRA ;AND ↑BIT IN CRA 3
CKMOR: BIT CRA ;TEST CRA FOR INPUT 3
BPL CKMOR ;TRY AGAIN 2
LDA PRA ;GET CHR 3
RTS ;RETURN __1_
; 14
; ROM INTER VECTS
LOC 177772
NMIV: ABSO NMIA ; 2
RSTV: ABSO ODT ; 2
IRQV: ABSO IRQA ; _2_
; 6
; ____
; 60
; 58
; 62
; 70
; __60_
END ; 250